package dao;
import java.util.List;

import org.hibernate.Transaction;
import org.hibernate.classic.Session;

import util.HibernateUtil;
import entity.ItemParcela;
import entity.ItemParcelaCompra;

public class ItemParcelaDaoImplementation implements ItemParcelaDao {

	public void save(ItemParcela itemParcela) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.save(itemParcela);
		transaction.commit();
		session.close();
	}

	public void update(ItemParcela itemParcela) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.update(itemParcela);
		transaction.commit();
		session.close();
	}

	public void delete(ItemParcela itemParcela) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		session.delete(itemParcela);
		transaction.commit();
		session.close();
	}

	public void consult(ItemParcela itemParcela) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();
		itemParcela = (ItemParcela) session.load(ItemParcela.class, new String("ItemParcela"));
	}

	public ItemParcela getItemParcela(long id) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
		return (ItemParcela) session.load(ItemParcela.class, id);
	}
	
	public List<ItemParcela> list() 
	{
	Session session = HibernateUtil.getSessionFactory().openSession();
	Transaction transaction = session.beginTransaction();
	String sql = "SELECT new ItemParcela( i.idItemParcela, i.parcela, i.dias, i.percentual, i.condicaoPagamento) FROM ItemParcela i";
	List<ItemParcela> lista = session.createQuery(sql).list();
	transaction.commit();
	session.close();
	return lista;
	}
	
	public List<ItemParcela> listItemParcelaByCondicaoId( Long condicaoId ) 
	{
		Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        String sql = "SELECT new ItemParcela (itp.idItemParcela, itp.parcela, itp.dias, itp.percentual, itp.condicaoPagamento) FROM ItemParcela itp WHERE itp.condicaoPagamento.id = :id";
        List<ItemParcela> lista = session.createQuery(sql).setParameter("id", condicaoId).list();
        transaction.commit();
        session.close();
        return lista;
	}
	
	@Override
	public List<ItemParcela> listItemParcelaNull() {
		Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        String sql = "FROM ItemParcela WHERE condicaoPagamento="+null;
        List<ItemParcela> listaParcela = session.createQuery(sql).list();
        transaction.commit();
        session.close();
        return listaParcela;
	}
	
	
	
	
	
	

}
